src/ZF/ex/LList_Eq.ML
changeset 496 3fc829fa81d2
parent 477 53fc8ad84b33
equal deleted inserted replaced
495:612888a07889 496:3fc829fa81d2
     9 (*Previously used <*> in the domain and variant pairs as elements.  But
     9 (*Previously used <*> in the domain and variant pairs as elements.  But
    10   standard pairs work just as well.  To use variant pairs, must change prefix
    10   standard pairs work just as well.  To use variant pairs, must change prefix
    11   a q/Q to the Sigma, Pair and converse rules.*)
    11   a q/Q to the Sigma, Pair and converse rules.*)
    12 
    12 
    13 structure LList_Eq = CoInductive_Fun
    13 structure LList_Eq = CoInductive_Fun
    14  (val thy = LList.thy |> add_consts [("lleq","i=>i",NoSyn)]
    14  (val thy 	 = LList.thy |> add_consts [("lleq","i=>i",NoSyn)]
    15   val thy_name = "LList_Eq"
    15   val thy_name 	 = "LList_Eq"
    16   val rec_doms   = [("lleq", "llist(A) * llist(A)")]
    16   val rec_doms   = [("lleq", "llist(A) * llist(A)")]
    17   val sintrs     = 
    17   val sintrs     = 
    18         ["<LNil, LNil> : lleq(A)",
    18         ["<LNil, LNil> : lleq(A)",
    19          "[| a:A; <l,l'>: lleq(A) |] ==> <LCons(a,l), LCons(a,l')>: lleq(A)"]
    19          "[| a:A; <l,l'>: lleq(A) |] ==> <LCons(a,l), LCons(a,l')>: lleq(A)"]
    20   val monos      = []
    20   val monos      = []
    21   val con_defs   = []
    21   val con_defs   = []
    22   val type_intrs = LList.intrs @ [SigmaI]
    22   val type_intrs = LList.intrs
    23   val type_elims = [SigmaE2]);
    23   val type_elims = []);
    24 
    24 
    25 (** Alternatives for above:
    25 (** Alternatives for above:
    26   val con_defs = LList.con_defs
    26   val con_defs = LList.con_defs
    27   val type_intrs = codatatype_intrs
    27   val type_intrs = codatatype_intrs
    28   val type_elims = [quniv_QPair_E]
    28   val type_elims = [quniv_QPair_E]