import Lake
open Lake DSL

package «SilverSight» where
  -- Settings applied to both builds and interactive editing
  leanOptions := #[
    ⟨`pp.unicode.fun, true⟩ -- pretty-prints `fun a ↦ b`
  ]
  -- Add any additional package configuration options here

@[default_target]
lean_lib «SilverSightCore» where
  -- Add any library configuration options here
  srcDir := "Core"
  roots := #[`SilverSightCore, `SilverSight.FixedPoint]

lean_lib «SilverSightFormal» where
  srcDir := "formal"
  roots := #[
    `CoreFormalism.FixedPoint,
    `CoreFormalism.Tactics,
    `CoreFormalism.Q16_16Numerics,
    `CoreFormalism.DynamicCanal,
    `CoreFormalism.Bind,
    `CoreFormalism.BraidBracket,
    `CoreFormalism.BraidStrand,
    `CoreFormalism.BraidCross,
    `CoreFormalism.BraidField,
    `CoreFormalism.SidonSets,
    `CoreFormalism.SieveLemmas,
    `CoreFormalism.InteractionGraphSidon,
    `CoreFormalism.BraidEigensolid,
    `CoreFormalism.BraidSpherionBridge
  ]

lean_lib «SilverSightRRC» where
  srcDir := "formal"
  roots := #[
    `SilverSight.PIST.Spectral,
    `SilverSight.PIST.Classify,
    `SilverSight.PIST.Matrices250,
    `SilverSight.RRCLogogramProjection,
    `SilverSight.ReceiptCore,
    `SilverSight.RRC.Emit,
    `SilverSight.AVMIsa.Types,
    `SilverSight.AVMIsa.Value,
    `SilverSight.AVMIsa.Instr,
    `SilverSight.AVMIsa.State,
    `SilverSight.AVMIsa.Step,
    `SilverSight.AVMIsa.Run,
    `SilverSight.AVMIsa.Emit
  ]

lean_exe «rrc-emit-fixture» where
  root := `RrcEmitFixture
  srcDir := "exe"

require mathlib from git
  "https://github.com/leanprover-community/mathlib4.git"
