fix(init/meta/decl_cmds): avoid blocking
This commit is contained in:
parent
e839080834
commit
3804722b91
2 changed files with 17 additions and 12 deletions
|
|
@ -36,17 +36,17 @@ e^.replace (λ e d,
|
|||
creates the declaration
|
||||
lemma g_lemma : forall a, g a > 0 := ... -/
|
||||
meta def copy_decl_updating_type (replacements : name_map name) (src_decl_name : name) (new_decl_name : name) : command :=
|
||||
do env ← get_env,
|
||||
decl ← returnex $ env^.get src_decl_name,
|
||||
new_type ← return $ apply_replacement replacements decl^.type,
|
||||
new_value ← return $ expr.const src_decl_name (decl^.univ_params^.for level.param),
|
||||
add_decl (((decl^.to_definition^.update_type new_type)^.update_name new_decl_name)^.update_value new_value),
|
||||
return ()
|
||||
do env ← get_env,
|
||||
decl ← returnex $ env^.get src_decl_name,
|
||||
decl ← return $ decl^.update_name $ new_decl_name,
|
||||
decl ← return $ decl^.update_type $ apply_replacement replacements decl^.type,
|
||||
decl ← return $ decl^.update_value $ expr.const src_decl_name (decl^.univ_params^.for level.param),
|
||||
add_decl decl
|
||||
|
||||
meta def copy_decl_using (replacements : name_map name) (src_decl_name : name) (new_decl_name : name) : command :=
|
||||
do env ← get_env,
|
||||
decl ← returnex $ env^.get src_decl_name,
|
||||
new_type ← return $ apply_replacement replacements decl^.type,
|
||||
new_value ← return $ task.map (apply_replacement replacements) decl^.value_task,
|
||||
add_decl (((decl^.to_definition^.update_type new_type)^.update_name new_decl_name)^.update_value_task new_value),
|
||||
return ()
|
||||
do env ← get_env,
|
||||
decl ← returnex $ env^.get src_decl_name,
|
||||
decl ← return $ decl^.update_name $ new_decl_name,
|
||||
decl ← return $ decl^.update_type $ apply_replacement replacements decl^.type,
|
||||
decl ← return $ decl^.map_value $ apply_replacement replacements,
|
||||
add_decl decl
|
||||
|
|
|
|||
|
|
@ -107,6 +107,11 @@ meta def declaration.update_value_task : declaration → task expr → declarati
|
|||
| (declaration.thm n ls t v) new_v := declaration.thm n ls t new_v
|
||||
| d new_v := d
|
||||
|
||||
meta def declaration.map_value : declaration → (expr → expr) → declaration
|
||||
| (declaration.defn n ls t v h tr) f := declaration.defn n ls t (f v) h tr
|
||||
| (declaration.thm n ls t v) f := declaration.thm n ls t (task.map f v)
|
||||
| d f := d
|
||||
|
||||
meta def declaration.to_definition : declaration → declaration
|
||||
| (declaration.cnst n ls t tr) := declaration.defn n ls t (default expr) reducibility_hints.abbrev tr
|
||||
| (declaration.ax n ls t) := declaration.thm n ls t (task.pure (default expr))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue