Skip to content

Commit d542d77

Browse files
committed
pretty print statements
1 parent ae87072 commit d542d77

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

src/axiomatic/pic_helpers.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,8 @@ def print_statements(
274274
.block { background-color: #fff; border: 1px solid #ddd; padding: 15px; margin-bottom: 20px; border-radius: 5px; }
275275
.block h2 { margin-top: 0; font-size: 1.2em; color: #333; }
276276
.block p { margin: 5px 0; color: #555; }
277+
.holds { background-color: #d4edda; border-color: #c3e6cb; }
278+
.not-hold { background-color: #f8d7da; border-color: #f5c6cb; }
277279
.label { font-weight: bold; }
278280
.block code {
279281
background-color: #f4f4f4;
@@ -288,7 +290,6 @@ def print_statements(
288290
</style>
289291
</head>
290292
<body>
291-
<h1> Extracted statements </h1>
292293
""")
293294

294295
# Cost Functions Rendering
@@ -317,7 +318,7 @@ def print_statements(
317318
val = cost_stmt.validation or cost_val
318319
if val.satisfiable is not None and val.message is not None:
319320
html_parts.append(f'<p><span class="label">Satisfiable:</span> {val.satisfiable}</p>')
320-
html_parts.append(f"<p>{val.message}</p>")
321+
html_parts.append(f'<p><span class="label">Reason:</span> {val.message}</p>')
321322
html_parts.append("</div>")
322323

323324
# Parameter Constraints Rendering
@@ -326,8 +327,9 @@ def print_statements(
326327
):
327328
if (param_stmt.formalization is None or param_stmt.formalization.mapping is None) and only_formalized:
328329
continue
329-
330-
html_parts.append('<div class="block">')
330+
val = param_stmt.validation or param_val
331+
holds_tag = "holds" if val.holds else "not-hold"
332+
html_parts.append(f'<div class="block {holds_tag}">')
331333
html_parts.append(f"<h2>{param_stmt.type}</h2>")
332334
html_parts.append(f'<p><span class="label">Statement:</span> {param_stmt.text}</p>')
333335
html_parts.append('<p><span class="label">Formalization:</span> ')
@@ -345,10 +347,10 @@ def print_statements(
345347
code = code.replace(var_name, f"{computation.name}({args_str})")
346348
html_parts.append(f"<code>{code}</code>")
347349
html_parts.append("</p>")
348-
val = param_stmt.validation or param_val
349350
if val.satisfiable is not None and val.message is not None and val.holds is not None:
350351
html_parts.append(f'<p><span class="label">Satisfiable:</span> {val.satisfiable}</p>')
351-
html_parts.append(f'<p><span class="label">Holds:</span> {val.holds} ({val.message})</p>')
352+
html_parts.append(f'<p><span class="label">Holds:</span> {val.holds}</p>')
353+
html_parts.append(f'<p><span class="label">Reason:</span> {val.message}</p>')
352354
html_parts.append("</div>")
353355

354356
# Structure Constraints Rendering
@@ -358,9 +360,10 @@ def print_statements(
358360
if struct_stmt.formalization is None and only_formalized:
359361
continue
360362

361-
html_parts.append('<div class="block">')
363+
holds_tag = "holds" if struct_val.holds else "not-hold"
364+
html_parts.append(f'<div class="block {holds_tag}">')
362365
html_parts.append(f"<h2>Type: {struct_stmt.type}</h2>")
363-
html_parts.append(f'<p><span class="label">Statement:</span> {struct_stmt.text}</p>')
366+
html_parts.append(f'<p><span class="label ">Statement:</span> {struct_stmt.text}</p>')
364367
html_parts.append('<p><span class="label">Formalization:</span> ')
365368
if struct_stmt.formalization is None:
366369
html_parts.append("UNFORMALIZED")
@@ -382,7 +385,7 @@ def print_statements(
382385
# Unformalizable Statements Rendering (if applicable)
383386
if not only_formalized:
384387
for unf_stmt in statements.unformalizable_statements or []:
385-
html_parts.append('<div class="block">')
388+
html_parts.append('<div class="block not-hold">')
386389
html_parts.append(f"<h2>Type: {unf_stmt.type}</h2>")
387390
html_parts.append(f'<p><span class="label">Statement:</span> {unf_stmt.text}</p>')
388391
html_parts.append('<p><span class="label">Formalization:</span> UNFORMALIZABLE</p>')
@@ -398,7 +401,6 @@ def print_statements(
398401
from IPython.display import display, HTML # type: ignore
399402

400403
display(HTML(final_html))
401-
402404
else:
403405
print("-----------------------------------\n")
404406
for cost_stmt, cost_val in zip(statements.cost_functions or [], validation.cost_functions or []):

0 commit comments

Comments
 (0)