summaryrefslogtreecommitdiff
path: root/test-suite/misc/poly-capture-global-univs/src/evilImpl.ml
blob: 6d8ce7c5d7dd8d06157b3802ceaf26cf81e8f8ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
open Names

let evil t f =
  let open Univ in
  let open Entries in
  let open Decl_kinds in
  let open Constr in
  let k = IsDefinition Definition in
  let u = Level.var 0 in
  let tu = mkType (Universe.make u) in
  let te = Declare.definition_entry
      ~univs:(Monomorphic_const_entry (ContextSet.singleton u)) tu
  in
  let tc = Declare.declare_constant t (DefinitionEntry te, k) in
  let tc = mkConst tc in

  let fe = Declare.definition_entry
      ~univs:(Polymorphic_const_entry (UContext.make (Instance.of_array [|u|],Constraint.empty)))
      ~types:(Term.mkArrow tc tu)
      (mkLambda (Name.Name (Id.of_string "x"), tc, mkRel 1))
  in
  ignore (Declare.declare_constant f (DefinitionEntry fe, k))