Theory Ground_Term_Context

theory Ground_Term_Context
  imports First_Order_Clause.Generic_Term_Context
begin

(* TODO: Do same pattern for nonground case *)
locale ground_term_context = 
  term_context_interpretation where is_var = "λ_. False" +
  smaller_subcontext where size = sizec +
  replace_at_subterm where is_var = "λ_. False"
for sizec

(* TODO: Name *)
locale ground_term_context' = ground_term_context where
  Fun = GFun and subterms = ground_subterms and fun_sym = ground_fun_sym and
  extra = ground_extra and size = ground_size and

  hole = ground_hole and compose_context = compose_ground_context and
  apply_context = apply_ground_context and subtermsl = ground_subtermsl and
  subcontext = ground_subcontext and subtermsr = ground_subtermsr and More = GMore and
  fun_symc = ground_fun_symc and extrac = ground_extrac and hole_position = ground_hole_position and
  context_at = ground_context_at and sizec = ground_sizec
for 
  GFun ground_subterms ground_fun_sym ground_extra ground_hole compose_ground_context
  apply_ground_context ground_subtermsl ground_subcontext ground_subtermsr GMore ground_fun_symc
  ground_extrac ground_size ground_hole_position ground_context_at ground_sizec


end