diff -r 1f5949a43e82 -r de6f18da81bb src/HOL/AxClasses/Lattice/LatMorph.ML --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/AxClasses/Lattice/LatMorph.ML Mon Jan 15 15:49:21 1996 +0100 @@ -0,0 +1,53 @@ + +open LatMorph; + + +(** monotone functions vs. "&&"- / "||"-semi-morphisms **) + +goalw thy [is_mono_def] "is_mono f = (ALL x y. f (x && y) [= f x && f y)"; + by (safe_tac set_cs); + (*==> (level 1)*) + by (stac le_inf_eq 1); + br conjI 1; + by (step_tac set_cs 1); + by (step_tac set_cs 1); + be mp 1; + br inf_lb1 1; + by (step_tac set_cs 1); + by (step_tac set_cs 1); + be mp 1; + br inf_lb2 1; + (*==> (level 11)*) + br (conjI RS (le_trans RS mp)) 1; + br inf_lb2 2; + by (subgoal_tac "x && y = x" 1); + be subst 1; + by (fast_tac set_cs 1); + by (stac inf_connect 1); + ba 1; +qed "mono_inf_eq"; + +goalw thy [is_mono_def] "is_mono f = (ALL x y. f x || f y [= f (x || y))"; + by (safe_tac set_cs); + (*==> (level 1)*) + by (stac ge_sup_eq 1); + br conjI 1; + by (step_tac set_cs 1); + by (step_tac set_cs 1); + be mp 1; + br sup_ub1 1; + by (step_tac set_cs 1); + by (step_tac set_cs 1); + be mp 1; + br sup_ub2 1; + (*==> (level 11)*) + br (conjI RS (le_trans RS mp)) 1; + br sup_ub1 1; + by (subgoal_tac "x || y = y" 1); + be subst 1; + by (fast_tac set_cs 1); + by (stac sup_connect 1); + ba 1; +qed "mono_sup_eq"; + +