We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/quanticsoul4772/logic-thinking'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
syllogisticVisualizer.ts•2.63 kB
import { SyllogisticArgument, SyllogisticStatement } from '../../../types.js';
import { EnhancedVennDiagramVisualizer } from './enhancedVennDiagram.js';
/**
* Main visualization class for syllogistic logic
* Provides a unified interface for different visualization options
*/
export class SyllogisticVisualizer {
private vennDiagramVisualizer: EnhancedVennDiagramVisualizer;
constructor() {
this.vennDiagramVisualizer = new EnhancedVennDiagramVisualizer();
}
/**
* Generate a visualization for a syllogistic argument
* @param argument The syllogistic argument to visualize
* @param type Type of visualization to generate
* @param format Output format
* @returns Visualization in the requested format
*/
visualize(
argument: SyllogisticArgument,
type: 'vennDiagram' | 'eulerDiagram' = 'vennDiagram',
format: 'html' | 'svg' | 'text' = 'svg'
): string {
// Generate the requested visualization type
switch (type) {
case 'vennDiagram':
// EnhancedVennDiagramVisualizer only generates SVG
return this.vennDiagramVisualizer.generateVennDiagram(argument);
case 'eulerDiagram':
// Not implemented yet - fall back to Venn diagram
return this.vennDiagramVisualizer.generateVennDiagram(argument);
default:
// Default to Venn diagram
return this.vennDiagramVisualizer.generateVennDiagram(argument);
}
}
/**
* Generate a basic visualization (text format) for syllogistic arguments
* @param argument The syllogistic argument
* @returns Text representation of the argument
*/
generateBasicVisualization(argument: SyllogisticArgument): string {
let text = 'Syllogistic Argument:\n\n';
text += `Major Premise: ${this.formatStatement(argument.majorPremise)}\n`;
text += `Minor Premise: ${this.formatStatement(argument.minorPremise)}\n`;
text += `Conclusion: ${this.formatStatement(argument.conclusion)}\n`;
return text;
}
/**
* Format a syllogistic statement as text
* @param statement The statement to format
* @returns Formatted string
*/
private formatStatement(statement: SyllogisticStatement): string {
switch (statement.type) {
case 'A': return `All ${statement.subject} are ${statement.predicate}.`;
case 'E': return `No ${statement.subject} are ${statement.predicate}.`;
case 'I': return `Some ${statement.subject} are ${statement.predicate}.`;
case 'O': return `Some ${statement.subject} are not ${statement.predicate}.`;
default: return 'Unknown statement type.';
}
}
}