528 |
528 |
529 override def toString: String = "Sessions.Deps(" + sessions_structure + ")" |
529 override def toString: String = "Sessions.Deps(" + sessions_structure + ")" |
530 } |
530 } |
531 |
531 |
532 |
532 |
|
533 /* notable groups */ |
|
534 |
|
535 sealed case class Group_Info( |
|
536 name: String, |
|
537 description: String, |
|
538 bulky: Boolean = false, |
|
539 afp: Boolean = false |
|
540 ) { |
|
541 override def toString: String = name |
|
542 } |
|
543 |
|
544 lazy val notable_groups: List[Group_Info] = |
|
545 List( |
|
546 Group_Info("large", "full 64-bit memory model or word arithmetic required", |
|
547 bulky = true, afp = true), |
|
548 Group_Info("slow", "CPU time much higher than 60min (on mid-range hardware)", |
|
549 bulky = true, afp = true), |
|
550 Group_Info("very_slow", "elapsed time of many hours (on high-end hardware)", |
|
551 afp = true), |
|
552 Group_Info("AFP", "entry within AFP", afp = true), |
|
553 Group_Info("doc", "Isabelle documentation"), |
|
554 Group_Info("no_doc", "suppressed Isabelle documentation") |
|
555 ) |
|
556 |
|
557 lazy val bulky_groups: Set[String] = |
|
558 Set.from(notable_groups.flatMap(g => if (g.bulky) Some(g.name) else None)) |
|
559 |
|
560 lazy val afp_groups: Set[String] = |
|
561 Set.from(notable_groups.flatMap(g => if (g.afp) Some(g.name) else None)) |
|
562 |
|
563 |
533 /* cumulative session info */ |
564 /* cumulative session info */ |
534 |
565 |
535 private val BUILD_PREFS_BG = "<build_prefs:" |
566 private val BUILD_PREFS_BG = "<build_prefs:" |
536 private val BUILD_PREFS_EN = ">" |
567 private val BUILD_PREFS_EN = ">" |
537 |
568 |
738 }).foldRight(Bibtex.Entries.empty)(_ ::: _) |
769 }).foldRight(Bibtex.Entries.empty)(_ ::: _) |
739 |
770 |
740 def record_proofs: Boolean = options.int("record_proofs") >= 2 |
771 def record_proofs: Boolean = options.int("record_proofs") >= 2 |
741 |
772 |
742 def is_afp: Boolean = chapter == AFP.chapter |
773 def is_afp: Boolean = chapter == AFP.chapter |
743 def is_afp_bulky: Boolean = is_afp && groups.exists(AFP.groups_bulky.contains) |
774 def is_afp_bulky: Boolean = is_afp && groups.exists(bulky_groups) |
744 } |
775 } |
745 |
776 |
746 object Selection { |
777 object Selection { |
747 val empty: Selection = Selection() |
778 val empty: Selection = Selection() |
748 val all: Selection = Selection(all_sessions = true) |
779 val all: Selection = Selection(all_sessions = true) |