equal
deleted
inserted
replaced
30 val unfolds = map (fn def => |
30 val unfolds = map (fn def => |
31 unfold_thms ctxt (id_apply :: vimage2p_unfolds @ abs_inverses @ no_reflexive [def])) rel_defs; |
31 unfold_thms ctxt (id_apply :: vimage2p_unfolds @ abs_inverses @ no_reflexive [def])) rel_defs; |
32 val folded_C_IHs = map (fn thm => thm RS @{thm spec2} RS mp) raw_C_IHs; |
32 val folded_C_IHs = map (fn thm => thm RS @{thm spec2} RS mp) raw_C_IHs; |
33 val C_IHs = map2 (curry op |>) folded_C_IHs unfolds; |
33 val C_IHs = map2 (curry op |>) folded_C_IHs unfolds; |
34 val C_IH_monos = |
34 val C_IH_monos = |
35 map3 (fn C_IH => fn mono => fn unfold => |
35 @{map 3} (fn C_IH => fn mono => fn unfold => |
36 (mono RSN (2, @{thm vimage2p_mono}), C_IH) |
36 (mono RSN (2, @{thm vimage2p_mono}), C_IH) |
37 |> fp = Greatest_FP ? swap |
37 |> fp = Greatest_FP ? swap |
38 |> op RS |
38 |> op RS |
39 |> unfold) |
39 |> unfold) |
40 folded_C_IHs rel_monos unfolds; |
40 folded_C_IHs rel_monos unfolds; |