# Re: [isabelle] Pairs/tuples

Steve,
On Thu, 2011-04-07 at 18:41 +0100, Steve W wrote:
> axiomatization
> lst :: "'a*nat*nat"
>
> axioms
> ax : "lst = (1,2,3)"
>
> lemma "snd (snd lst) = 3"
> apply (simp add: ax)
>
> doesn't find a proof. How come changing the type of an element could make
> such a difference?
In the axiom ax, 'a provides a constant 1, i.e., 'a is of sort "one".
Hence the inferred (most general) type of lst in ax is 'a::one * nat *
nat. Switch on Isabelle > Settings > Display > Show Sorts and have
Isabelle print the axiom ("thm ax") to see this.
In the lemma, however, the inferred type of lst is its declared type
'a * nat * nat, which is more general than 'a::one * nat * nat.
Therefore, the axiom ax does not apply.
By the way, you should really use definition instead of axiomatization/
axioms in your formalizations.
Kind regards,
Tjark

*This archive was generated by a fusion of
Pipermail (Mailman edition) and
MHonArc.*