src/ZF/ex/LList.ML
changeset 2496 40efb87985b5
parent 2469 b50b8c0eec01
child 4091 771b1f6422a8
equal deleted inserted replaced
2495:82ec47e0a8d3 2496:40efb87985b5
    21 val LCons_iff      = llist.mk_free "LCons(a,l)=LCons(a',l') <-> a=a' & l=l'";
    21 val LCons_iff      = llist.mk_free "LCons(a,l)=LCons(a',l') <-> a=a' & l=l'";
    22 val LNil_LCons_iff = llist.mk_free "~ LNil=LCons(a,l)";
    22 val LNil_LCons_iff = llist.mk_free "~ LNil=LCons(a,l)";
    23 
    23 
    24 goal LList.thy "llist(A) = {0} <+> (A <*> llist(A))";
    24 goal LList.thy "llist(A) = {0} <+> (A <*> llist(A))";
    25 let open llist;  val rew = rewrite_rule con_defs in  
    25 let open llist;  val rew = rewrite_rule con_defs in  
    26 by (fast_tac (!claset addSIs (subsetI :: equalityI :: map rew intrs)
    26 by (fast_tac (!claset addSIs (subsetI ::map rew intrs) addEs [rew elim]) 1)
    27                       addEs [rew elim]) 1)
       
    28 end;
    27 end;
    29 qed "llist_unfold";
    28 qed "llist_unfold";
    30 
    29 
    31 (*** Lemmas to justify using "llist" in other recursive type definitions ***)
    30 (*** Lemmas to justify using "llist" in other recursive type definitions ***)
    32 
    31