src/HOL/Transitive_Closure.thy
changeset 56257 589fafcc7cb6
parent 55575 a5e33e18fb5c
child 57178 276befcd90d9
equal deleted inserted replaced
56256:1e01c159e7d9 56257:589fafcc7cb6
  1237   val trancl_rtrancl_trancl = @{thm trancl_rtrancl_trancl};
  1237   val trancl_rtrancl_trancl = @{thm trancl_rtrancl_trancl};
  1238   val rtrancl_trans = @{thm rtrancl_trans};
  1238   val rtrancl_trans = @{thm rtrancl_trans};
  1239 
  1239 
  1240   fun decomp (@{const Trueprop} $ t) =
  1240   fun decomp (@{const Trueprop} $ t) =
  1241     let fun dec (Const (@{const_name Set.member}, _) $ (Const (@{const_name Pair}, _) $ a $ b) $ rel ) =
  1241     let fun dec (Const (@{const_name Set.member}, _) $ (Const (@{const_name Pair}, _) $ a $ b) $ rel ) =
  1242         let fun decr (Const ("Transitive_Closure.rtrancl", _ ) $ r) = (r,"r*")
  1242         let fun decr (Const (@{const_name rtrancl}, _ ) $ r) = (r,"r*")
  1243               | decr (Const ("Transitive_Closure.trancl", _ ) $ r)  = (r,"r+")
  1243               | decr (Const (@{const_name trancl}, _ ) $ r)  = (r,"r+")
  1244               | decr r = (r,"r");
  1244               | decr r = (r,"r");
  1245             val (rel,r) = decr (Envir.beta_eta_contract rel);
  1245             val (rel,r) = decr (Envir.beta_eta_contract rel);
  1246         in SOME (a,b,rel,r) end
  1246         in SOME (a,b,rel,r) end
  1247       | dec _ =  NONE
  1247       | dec _ =  NONE
  1248     in dec t end
  1248     in dec t end
  1260   val trancl_rtrancl_trancl = @{thm tranclp_rtranclp_tranclp};
  1260   val trancl_rtrancl_trancl = @{thm tranclp_rtranclp_tranclp};
  1261   val rtrancl_trans = @{thm rtranclp_trans};
  1261   val rtrancl_trans = @{thm rtranclp_trans};
  1262 
  1262 
  1263   fun decomp (@{const Trueprop} $ t) =
  1263   fun decomp (@{const Trueprop} $ t) =
  1264     let fun dec (rel $ a $ b) =
  1264     let fun dec (rel $ a $ b) =
  1265         let fun decr (Const ("Transitive_Closure.rtranclp", _ ) $ r) = (r,"r*")
  1265         let fun decr (Const (@{const_name rtranclp}, _ ) $ r) = (r,"r*")
  1266               | decr (Const ("Transitive_Closure.tranclp", _ ) $ r)  = (r,"r+")
  1266               | decr (Const (@{const_name tranclp}, _ ) $ r)  = (r,"r+")
  1267               | decr r = (r,"r");
  1267               | decr r = (r,"r");
  1268             val (rel,r) = decr rel;
  1268             val (rel,r) = decr rel;
  1269         in SOME (a, b, rel, r) end
  1269         in SOME (a, b, rel, r) end
  1270       | dec _ =  NONE
  1270       | dec _ =  NONE
  1271     in dec t end
  1271     in dec t end